package com.peanut.controller;

import com.peanut.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;

/**
 * @className: com.peanut-> ParamController
 * @description: 测试请求参数
 * @author: chenhs
 * @createDate: 2021-08-08 16:37
 * @version: 1.0
 */
@Controller
public class ParamController {
    public static void main(String[] args) {
        System.out.println("张三");
    }
    @RequestMapping(value = "paramPage")
    public String param(HttpServletRequest request) {
        request.getParameter("userName");
        return "param";
    }

    //servletAPI方式获取请求参数
    @RequestMapping(value = "paramServletAPI")
    public String param2(HttpServletRequest request) {
        showy();
        System.out.println(request.getParameter("userName"));
        System.out.println(request.getParameter("password"));
        return "success";
    }

    //控制器形参获取参数
    @RequestMapping(value = "testParam")
    public String param3(String userName, String password) {
        showy();
        System.out.println(userName);
        System.out.println(password);
        return "success";
    }

    //控制器形参获取参数 多个参数key相同
    @RequestMapping(value = "paramEqualName")
    /**
     * @RequestParam
     *    value 给key 取别名 也就是说 前端传来的参数 是   user_Name 或者  userName 都可以用userName 接收。
     *    name 给key 取别名 也就是说 前端传来的参数 是   user_Name 或者  userName 都可以用userName 接收。
     *    required 是否自动装配 默认是 默认这个注解的参数必须传 false 可为空。
     *    defaultValue 默认值：如果这个参数未传 或者 传输值为空时，直接装配默认值。
     */
    public String param3(@RequestParam(value = "user_Name", required = true, defaultValue = "我默认值") String userName, String password, String hlobby) {
        // 可以用 String接收 也可以用 数组接收。 String hlobby   String[] hlobby
        showy();
        System.out.println(userName);
        System.out.println(password);
        System.out.println(hlobby);
        return "success";
    }

    // @RequestHeader 测试
    @RequestMapping(value = "/testHeader")
    public String param3(@RequestHeader(value = "host") String host) {
        showy();
        System.out.println("host:" + host);
        return "success";
    }
    // @CookieValue 测试
    @RequestMapping(value = "/testCookie")
    public String param4(@CookieValue(value = "JSESSIONID") String JSESSIONID) {
        showy();
        System.out.println("JSESSIONID:" + JSESSIONID);
        return "success";
    }

    // 实体接收参数 测试
    @RequestMapping(value = "/testPojo")
    public String param5(User user) {
        showy();

        System.out.println("user:" +user.toString() );
        return "success";
    }
    // 打印信息在控制台更好的看见
    public void showy() {
        for (int i = 0; i < 10; i++) {
            System.out.println("------------------------");
        }
    }
}
